Sketch VL53L0X con display, motore pp e Joystick
/* 5
Utilizzo del modulo VL53L0X, display, motore pp e Joystick. Con il joystick si manovra il motore pp mentre
il sensore TOF fornisce in continuo la misura delle distanze degli oggetti effettuando una vera scansione dello
spazio circostante.
/*
#include <Motorstep.h>
#include <Wire.h> // Per gestire il protocollo I2C
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
#include <VL53L0X.h>
#define LONG_RANGE
#define HIGH_ACCURACY
VL53L0X sensor;
//int pwrPin = 13; //pin usato per alimentare il ToF (VIN)
Motorstep Motorstep(8,9,10,11,25); // Pin utilizzati per motore pp. Ultima cifra è la pausa in ms
int x, y;
bool pulsante;
int Misura_A=0;
void setup ()
{
 lcd.init(); // inizializza il display
 lcd.backlight(); //accende la retroilluminazione
 // Scrittura dei testi sul display
 lcd.setCursor(0, 0);
 lcd.print("CORSO ARDUINO ED");

 lcd.setCursor(0, 1);
 lcd.print("ELEM.DI ROBOTICA");
 delay (3000);

Serial.begin(9600);
 Wire.begin(); // Arduino assume il ruolo di Master
 sensor.init();
 sensor.setTimeout(500);
  #if defined LONG_RANGE
 sensor.setSignalRateLimit(0.2);
 sensor.setVcselPulsePeriod(VL53L0X ::VcselPeriodPreRange, 18);
 sensor.setVcselPulsePeriod(VL53L0X ::VcselPeriodFinalRange, 14);
 #endif
 #if defined HIGH_ACCURACY
 sensor.setMeasurementTimingBudget(200000);
 #endif
 sensor.startContinuous();
 pinMode (2, INPUT_PULLUP); // Per Joystick
}
void loop ()
{
x = analogRead (0);
y = analogRead (1);
pulsante = digitalRead (2);
Serial.print("X = "); Serial.print (x, DEC);
Serial.print("\t");
Serial.print ("Y = "); Serial.println (y, DEC);
if (x < 300)
stepSX();
if (x > 700)
stepDX();
if (pulsante == LOW)
{
Serial.print ("Valore misurato = ");
Serial.println( Misura_A);
delay (2000);
}
delay (100);

}
void stepSX()
 {
 Motorstep.orario();
 Misura_A = sensor.readRangeContinuousMillimeters();
 Serial.println( Misura_A);
 lcd.clear(); lcd.print(Misura_A);
 }
 void stepDX()
 {
 Motorstep.antiorario();
 Misura_A = sensor.readRangeContinuousMillimeters();
 Serial.println( Misura_A);
 lcd.clear(); lcd.print(Misura_A);
 }